package test;

import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;

import operacionesWebAPI.FuncionesJSON;
import persistencia.ConexionBD;
import persistencia.Consultas;
import persistencia.InteraccionesBD;
import entidades.Partida;

public class Main {

	public static void main(String[] args) throws Exception {
		/*
		 * Crear conexion con base de datos y el statement
		 */
		Connection c = ConexionBD.iniciarConexion();
		Statement s = ConexionBD.createStatement(c);
		
		Long playerID = 37233446L;
		
		comprobarNuevasPartidas(s, playerID);
		
		/*
		 * Cerrar conexion con la base de datos
		 */
		ConexionBD.cerrarConexion(c);
	}

	/**
	 * Recopila todas las partidas del usuario, borrando la base de datos
	 * previamente.
	 */
	public static void partidasDesde0(Statement s, Long playerID) {
		/*
		 * Obtener todos los matchID y los pocos datos obtenibles de la primera
		 * llamada a la API, almacenarlo todo en local, sin subir a la BD
		 */
		System.out.println("Recolectando matchIDs . . .");
		ArrayList<Partida> partidas = FuncionesJSON.obtenerMatchesID((long) 0);
		System.out.println("Total de matchIDs recolectados.");

		/*
		 * Obtener el resto de datos de las partidas con sucesivas llamadas a la
		 * API
		 */
		System.out.println("Completando el resto de los datos . . .");
		partidas = FuncionesJSON.completarInformacionPartidas(partidas);
		System.out.println("Finalizado.");

		/*
		 * Subir todo a la base de datos
		 */
		System.out.println("Subiendo a la base de datos . . .");
		for (Partida p : partidas) {
			InteraccionesBD.insertMatch(s, p, playerID);
		}
		System.out.println("Base de datos actualizada.");

	}

	/**
	 * Comprueba si hay nuevas partidas, si las hay las incorpora a la BD.
	 * */
	public static void comprobarNuevasPartidas(Statement s, Long playerID) {
		ArrayList<Partida> aux = null;
		
		// Ultima partida almacenada en la BD
		Long ultimaPartida = Consultas.ultimaPartida(s);
		System.out.println("Ultima partida almacenada: " + ultimaPartida);
		
		System.out.println("Comprobando ultimas partidas jugadas . . .");
		// Llamada a la API para obtener las ultimas partidas
		aux = FuncionesJSON.obtenerMatchesID(ultimaPartida);
		
		if(aux.size() == 0){
			System.out.println("No hay partidas nuevas.");
		}else{
			System.out.println("Hay partidas nuevas, completando datos . . .");
			
			/*
			 * Obtener el resto de datos de las partidas con sucesivas llamadas a la
			 * API
			 */
			aux = FuncionesJSON.completarInformacionPartidas(aux);
			System.out.println("Finalizado. Numero de partidas: " + aux.size());
			
			/*
			 * Subir todo a la base de datos
			 */
			System.out.println("Actualizando la base de datos . . .");
			for (Partida p : aux) {
				InteraccionesBD.insertMatch(s, p, playerID);
			}
			System.out.println("Base de datos actualizada.");
			
		}
	}
}





































